home *** CD-ROM | disk | FTP | other *** search
- ; 32bit Division/Modulo fuer 68000
-
- * Functions:
- * long __divu(register long d0, register long d1)
- * long __divs(register long d0, register long d1)
- * long __modu(register long d0, register long d1)
- * long __mods(register long d0, register long d1)
- ; __ldivs etc. erwarten Parameter auf dem Stack
-
-
- code
-
- xdef __ldivs
- xdef __ldivu
- xdef __lmods
- xdef __lmodu
-
- __ldivs
- movem.l 4(sp),d0/d1
- bra __divs
- __ldivu
- movem.l 4(sp),d0/d1
- bra __divu
- __lmods
- movem.l 4(sp),d0/d1
- bra __mods
- __lmodu
- movem.l 4(sp),d0/d1
- bra __modu
-
-
- __mods:
- tst.l d1
- bmi.s 1$
- tst.l d0
- bmi.s 2$
- bsr.s __divu
- move.l d1,d0
- rts
- 1$:
- neg.l d1
- tst.l d0
- bmi.s 3$
- bsr.s __divu
- neg.l d1
- move.l d1,d0
- rts
- 2$:
- neg.l d0
- bsr.s __divu
- neg.l d1
- move.l d1,d0
- rts
- 3$:
- neg.l d0
- bsr.s __divu
- move.l d1,d0
- rts
-
-
- __modu:
- bsr.s __divu
- move.l d1,d0
- rts
-
-
- __divs:
- tst.l d1
- bmi.s 1$
- tst.l d0
- bmi.s 2$
- bra.s __divu
- 1$:
- neg.l d1
- tst.l d0
- bmi.s 3$
- bsr.s __divu
- neg.l d0
- rts
- 2$:
- neg.l d0
- bsr.s __divu
- neg.l d0
- rts
- 3$:
- neg.l d0
-
-
- __divu:
- tst.l d1
- beq.s 1$
- swap d1
- tst.w d1
- bne.s 3$
- move.l d2,-(sp)
- swap d1
- move.l d0,d2
- divu d1,d2
- bvs.s 2$
- move.l d2,d1
- clr.w d1
- swap d1
- moveq #0,d0
- move.w d2,d0
- move.l (sp)+,d2
- rts
- 1$:
- move.l d0,d1
- moveq #-1,d0
- rts
- 2$:
- move.l d3,-(sp)
- move.l d0,d2
- clr.w d2
- swap d2
- divu d1,d2
- move.w d2,d3
- swap d3
- clr.w d3
- move.w d0,d2
- divu d1,d2
- move.w d2,d3
- move.l d3,d0
- clr.w d2
- swap d2
- move.l d2,d1
- move.l (sp)+,d3
- move.l (sp)+,d2
- rts
- 3$:
- movem.l d2-d4,-(sp)
- move.l d0,d2
- clr.w d2
- swap d2
- divu d1,d2
- move.w d2,d3
- moveq #0,d2
- move.w d3,d2
- mulu d1,d3
- swap d1
- move.w d2,d4
- mulu d1,d4
- swap d3
- add.l d4,d3
- sub.l d3,d0
- bmi.s 4$
- move.l d0,d1
- move.l d2,d0
- movem.l (sp)+,d2-d4
- rts
- 4$:
- subq.l #1,d2
- add.l d1,d0
- bmi.s 4$
- move.l d0,d1
- move.l d2,d0
- movem.l (sp)+,d4-d2
- rts
-
-